package br.com.fogas.medicao.business;

import java.sql.SQLException;

import br.com.fogas.database.entidade.NotaOcorrencia;
import br.com.fogas.database.enums.NotaOcorrenciaStatusEnum;
import br.com.fogas.database.enums.PlanoVisitaStatusEnum;
import br.com.fogas.medicao.R;
import br.com.fogas.medicao.activity.helper.PlanoClientesHelper;
import br.com.fogas.medicao.application.ApplicationFogas;
import br.com.fogas.medicao.utils.MedicaoUtils;
import br.com.fogas.utils.dialog.DialogAlert;
import br.com.fogas.utils.task.ServiceTask;
import br.com.fogas.utils.task.ServiceTaskBusiness;

public class VisitaSemConsumoBusiness implements ServiceTaskBusiness {

	private PlanoClientesHelper helper;
	private String observacao;
	private NotaOcorrencia ultimaOcorrencia;

	public VisitaSemConsumoBusiness(PlanoClientesHelper helper, String observacao, NotaOcorrencia ultimaOcorrencia) {
		this.helper = helper;
		this.observacao = observacao;
		this.ultimaOcorrencia = ultimaOcorrencia;
	}
	
	@Override
	public void start(ServiceTask serviceTask) {
		try {
			String[] obs = MedicaoUtils.observacaoOcorrencia(observacao);
			
			PlanoVisitaStatusEnum statusPlano = helper.getPlanoSelecionado().getStatusEnum();
			
			if(statusPlano.equals(PlanoVisitaStatusEnum.PENDENTE)) {
				NotaOcorrencia ocorrencia = new NotaOcorrencia();
				ocorrencia.setTx_plano_visita(helper.getPlanoSelecionado());
				ocorrencia.setNb_sync(NotaOcorrenciaStatusEnum.PENDENTE.getId());
				ocorrencia.setTx_plano(ApplicationFogas.getInstance().getConfiguracao().getAppDados().getPlano());
				ocorrencia.setTx_obs1(obs[0]);
				ocorrencia.setTx_obs2(obs[1]);
				helper.getDatabase().getNotaOcorrencia().create(ocorrencia);
				
				helper.getPlanoSelecionado().setStatus(PlanoVisitaStatusEnum.CANCELADO.getId());
				helper.getDatabase().getPlanoVisitas().update(helper.getPlanoSelecionado());
				
			} else if(statusPlano.equals(PlanoVisitaStatusEnum.CANCELADO)) {
				if(ultimaOcorrencia == null) {
					NotaOcorrencia ocorrencia = new NotaOcorrencia();
					ocorrencia.setTx_plano_visita(helper.getPlanoSelecionado());
					ocorrencia.setNb_sync(NotaOcorrenciaStatusEnum.PENDENTE.getId());
					ocorrencia.setTx_plano(ApplicationFogas.getInstance().getConfiguracao().getAppDados().getPlano());
					ocorrencia.setTx_obs1(obs[0]);
					ocorrencia.setTx_obs2(obs[1]);
					helper.getDatabase().getNotaOcorrencia().create(ocorrencia);
				} else {
					ultimaOcorrencia.setNb_sync(NotaOcorrenciaStatusEnum.PENDENTE.getId());
					ultimaOcorrencia.setTx_obs1(obs[0]);
					ultimaOcorrencia.setTx_obs2(obs[1]);
					helper.getDatabase().getNotaOcorrencia().update(ultimaOcorrencia);
				}
			} else if(statusPlano.equals(PlanoVisitaStatusEnum.FINALIZADO)) {
				ultimaOcorrencia.setNb_sync(NotaOcorrenciaStatusEnum.PENDENTE.getId());
				ultimaOcorrencia.setTx_obs1(obs[0]);
				ultimaOcorrencia.setTx_obs2(obs[1]);
				helper.getDatabase().getNotaOcorrencia().update(ultimaOcorrencia);	
			}
			
			helper.atualizarTela(helper.getPlanoSelecionado().getLocal());
			
			DialogAlert.newInstance()
			.setTitle(R.string.dialog_title_alert)
			.setCharMessage(helper.getFragment().getString(R.string.dialog_atualizar_ocorrencia))
			.showDialog(helper.getFragment().getChildFragmentManager());
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
}